package com.ly.mpayment.persist.service;

import java.util.Map;

import com.ly.mpayment.core.util.ListRange;



/**
 * 
 *
 * @param <T>
 * @param <PK>
 */
public interface IService<T,PK> {	
	
	@SuppressWarnings({   "rawtypes" })
	public ListRange deleteByIdWidthResult(PK id);
	
	@SuppressWarnings("rawtypes")
	public ListRange deleteDataByIds(String name, String[] id);

	/**
	 * 基于仓库猫多条件查询
	 * 
	 * @param name
	 *            条件名称(仓库猫)
	 * @param parameters
	 *            查询参数
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ListRange findDataByNamed(String name, Map<String,Object> parameters);

	/**
	 * 基于仓库猫分页查询
	 * 
	 * @param name
	 *            条件名称(仓库猫)
	 * @param parameters
	 *            查询条件
	 * @param currentPage
	 *            当前页
	 * @param pageSize
	 *            单页显示记录数
	 * @return 分页对象
	 */
	@SuppressWarnings("rawtypes")
	public ListRange findPageDataByNamed(String name, Map<String,Object> parameters,
			int currentPage, int pageSize);

    /**
	 * 基于仓库猫分页查询
	 *
	 * @param name
	 *            条件名称(仓库猫)
	 * @param parameters
	 *            查询条件;包含分页所需参数:
     *              firstResult;maxResult
	 * @return 分页对象
	 */
    @SuppressWarnings("rawtypes")
	public ListRange findPageDataByNamed(String name, Map<String,Object> parameters);

	/**
	 * 根据ID查询数据 
	 * 
	 * @param parameter - 查询参数
	 * 
	 */
	@SuppressWarnings("rawtypes")
	public ListRange findById(Map parameter);

    /**
     * 通过id查找对象
     * @param id
     * @return
     */
    @SuppressWarnings("rawtypes")
	public ListRange findById(PK id);
	
	/**
	 * 新增\修改
	 * 
	 * @param entity
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ListRange saveOrUpdateData(T entity);
	
	/**
	 * 删除
	 * 
	 * @param entity
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ListRange deleteDataByEntity(T entity);
	
	/**
	 * 当前台转换为字符串时，删除多个ID的值可调用此方法
	 * @param ids
	 * @return
	 */
	public boolean deleteByIds(String ids,T entity);
	
	
}
